package com.justgame.project.service.system.mapper;


import com.justgame.project.service.api.dto.LoginedInfoModel;
import com.justgame.project.service.api.dto.SysUserInfoDTO;
import com.justgame.project.service.api.entity.SysUserInfo;
import com.justgame.project.service.api.vo.OnlineUserInfoVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;


@Mapper
public interface SysUserInfoMapper {
    /**
     * 注册账户
     *
     * @param dto dto
     * @return
     */
    int createAccount(@Param("dto") SysUserInfoDTO dto);

    /**
     * 查询是否存在相同的账号
     *
     * @param uname uname
     * @return 数量
     */
    int countsOfAccountName(@Param("uname") String uname);

    /**
     * 相同邮箱
     *
     * @param email
     * @return
     */
    int countsOfEmail(@Param("email") String email);

    /**
     * 查询是否存在相同的字段和值
     *
     * @param key
     * @param val
     * @return
     */
    int hasSameKv(@Param("key") String key, @Param("val") String val);

    List<SysUserInfo> selectAllAccountsId();

    SysUserInfo selectUserInfoById(@Param("userid") String userid);

    /**
     * 登陆服务
     *
     * @param loginUserModel loginUserModel
     * @return loginUserModel
     */
    LoginedInfoModel loginByAccount(@Param("user") SysUserInfoDTO loginUserModel);

    LoginedInfoModel loginByEmail(@Param("user") SysUserInfoDTO loginUserModel);

    LoginedInfoModel loginByPhone(@Param("user") SysUserInfoDTO loginUserModel);

    /**
     * 重新获取用户信息
     *
     * @param userId userId
     * @return loginUserModel
     */
    LoginedInfoModel regainUserInfo(@Param("userId") String userId);

    /**
     * 管理员查询全部用户信息
     *
     * @return
     */
    List<OnlineUserInfoVO> queryAll();

    /**
     * 通过id更新数据
     *
     * @param user
     * @return
     */
    int updateById(@Param("user") SysUserInfoDTO user);

}
